The present invention relates to the field of software applications and provides methods, user terminals, systems and computer program products for facilitating service provision between such software applications.
User terminals such as mobile telephones, laptop computers, desktop computers and the like often execute software functions that perform various functions on the user terminal. Such applications may be pre-installed on the user device, such that they are held on the device at the time of purchase, or they may be installed on the device subsequent to purchase. In the latter case, a user may connect to an application portal, such as the Apple® Appstore™ or Android™ Marketplace, via their user terminal, whereupon they are presented with a selection of applications available for download and installation.
In some cases, enterprises may also maintain their own application distribution systems for distributing application to user devices connected thereto, in which entitlement to applications is determined on the basis of enterprise provided user or device authentication credentials.
The operating systems of such user devices typically provide frameworks that allow for applications to communicate and interoperate. This enables some applications (herein referred to as “service providing applications”) to provide services for other applications (herein referred to as “service consuming applications”). For example, a printing application may provide service enabling printing of documents on behalf of a document viewing application; in another example, a cryptography application may provide a service for decrypting data (or example, e-mail data) on behalf of another application (for example, an e-mail application). In some cases, the service providing application and the service consuming application may be held on the same user terminal. In other cases, the service providing application may be held on a device remote from the user terminal on which the application is held, such as another user terminal or a server device.
However, for each given service (defined by an interface definition defining the input parameters for the service), there is typically only one application available for providing the service. It would be desirable to provide a framework for facilitating the development of multiple service providing applications for executing a given service.
Further, applications held on a user terminal may not be aware of the presence of other applications available for the provision of services of which it may make use. Therefore, an application may not be aware of the services that may be available to it from the other applications. In particular, the applications held on a given user device, or on other devices accessible by the given user device, may change over time. As described above, a user may install new applications on the device; applications may also be deleted. It would be desirable to provide a discovery framework enabling applications held on a user terminal to identify services that are available from other applications held on the user terminal.